#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

int main()
{
    // pid_t waitpid(pid_t pid,int *stat_loc,int options)函数返回值为子进程的进程ID
    // pid 为-1 表示等待任意子进程,等同于wait(&status) 0 表示等待进程组id与调用进程相同的任意子进程
    // stat_loc 为子进程的退出码
    // options 为等待选项 WCONTINUE返回当前处于暂停状态的子进程 WNOHANG非阻塞等待 WUNTRACED返回从暂停状态恢复的子进程
    printf("main\n");

    pid_t pid = fork();
    if (pid > 0)
    {
        printf("parent\n");
    }
    else if (pid == 0)
    {
        printf("child pid = %d\n" ,getpid());
        // sleep(15);
        pause();    //阻塞进程 等待一个信号
    }
    int status;
    waitpid(pid, &status, WUNTRACED);
    // 判断进程是否被信号暂停 且已经设置WUNTRACED则为真
    if (WIFSTOPPED(status))
    {
        printf("child stop\n");
        // 获取信号
        printf("status:%d\n",WSTOPSIG(status));
    }
    
}